﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IWorkCollection.cs" company="AzureContrib (Open source library http://azurecontrib.codeplex.com)">
//   Microsoft Public License (Ms-PL)
// </copyright>
// <summary>
//   In the system there may be both <see cref="Lazy{T,TMetadata}" /> of <see cref="IWorkItem" /> and <see cref="IWorkItemMetadata" />
//   and <see cref="Lazy{T}" /> of <see cref="IWork" />. The latter is what we want and need. This compactor wraps up the former into
//   the contract of the latter. <seealso cref="ILazyValueMetadataCollection{TValue,TMetadata,TValueMetadata}.Compact" />
// </summary>
// --------------------------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;

namespace AzureContrib.WindowsAzure.WorkServices
{
	/// <summary>
	/// In the system there may be both <see cref="Lazy{T,TMetadata}"/> of <see cref="IWorkItem"/> and <see cref="IWorkItemMetadata"/>
	/// and <see cref="Lazy{T}"/> of <see cref="IWork"/>. The latter is what we want and need. This compactor wraps up the former into
	/// the contract of the latter. <seealso cref="ILazyValueMetadataCollection{TValue,TMetadata,TValueMetadata}.Compact"/>
	/// </summary>
	[InheritedExport(typeof(IWorkCollection)),
	 InheritedExport(typeof(IEnumerable<Lazy<IWork>>))]
	public interface IWorkCollection : ILazyValueMetadataCollection<IWorkItem, IWorkItemMetadata, IWork>
	{
	}
}